// @noEmit: true
// @checkJs: true
// @allowJs: true
// @Filename: a.js
class B {
    foo() {
    }
    constructor(){
        this.n = 1;
    }
}
class C extends B {
}
// this override should be fine (even if it's a little odd)
C.prototype.foo = function() {
};
class D extends B {
}
D.prototype.foo = ()=>{
    this.n = 'not checked, so no error';
};
// post-class prototype assignments are trying to show that these properties are abstract
class Module {
}
Module.prototype.identifier = undefined;
Module.prototype.size = null;
class NormalModule extends Module {
    identifier() {
        return 'normal';
    }
    size() {
        return 0;
    }
}
